package com.hy.parse;


import org.junit.Test;
import org.springframework.beans.factory.config.BeanDefinition;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.beans.factory.support.PropertiesBeanDefinitionReader;

public class PropertiesParse {

	@Test
	public void propertiesParseTest(){
		// 定义一个spring容器，这个容器默认实现了BeanDefinitionRegistry，所以本身就是一个bean注册器
		DefaultListableBeanFactory factory = new DefaultListableBeanFactory();
		//定义一个properties的BeanDefinition读取器，需要传递一个BeanDefinitionRegistry（bean注册器）对象
		PropertiesBeanDefinitionReader reader = new PropertiesBeanDefinitionReader(factory);
		//指定bean xml配置文件的位置
		String location = "beans.properties";
		//通过PropertiesBeanDefinitionReader加载bean properties文件，然后将解析产生的BeanDefinition注册到容器容器中
		int count = reader.loadBeanDefinitions(location);
		System.out.println(String.format("共注册了%s个bean", count));
		//打印出注册的bean的配置信息
		for (String beanDefinitionName : factory.getBeanDefinitionNames()) {
			//通过名称从容器中获取对应的BeanDefinition信息
			BeanDefinition beanDefinition = factory.getBeanDefinition(beanDefinitionName);
			//获取BeanDefinition具体使用的是哪个类
			String beanDefinitionClassName = beanDefinition.getClass().getName();
			//通过名称获取bean对象
			Object bean = factory.getBean(beanDefinitionName);
			//打印输出
			System.out.println(beanDefinitionName + ":");
			System.out.println("    beanDefinitionClassName：" + beanDefinitionClassName);
			System.out.println("    beanDefinition：" + beanDefinition);
			System.out.println("    bean：" + bean);

		}





	}
}
